package com.yiyibook.service;

import com.github.pagehelper.PageInfo;
import com.yiyibook.entity.Book;
import com.yiyibook.util.ResultEntity;

import java.util.List;
import java.util.Map;

/**
 * 〈功能简述〉
 *  图书逻辑
 * @author xun.gong@hand-china.com
 * @date 2019/10/12
 */
public interface BookService {

    /**
     * 功能描述:
     * 〈根据书籍编号查询是否有记录〉
     * @param bookNum 书籍编号
     * @return Book
     * @author yi.wu
     * @date 2019/10/12
     */
    Book selectByBookNum(String bookNum);

    /**
     * 功能描述:
     * 〈新增书籍〉
     * @param book 书籍信息
     * @return int
     * @author xun.gong@hand-china.com
     * @date 2019/10/12
     */
    int insert(Book book);

    /**
     * 功能描述:
     * 〈根据图书小类id查询图书〉
     * @param smallStyleId 图书小类id
     * @return List
     * @author xun.gong@hand-china.com
     * @date 2019/10/14
     */
    List<Book> selectByBookSmallStyleId(Integer smallStyleId);

    /**
     * 功能描述:
     * 〈获取数据库中最后一本书籍的流水号〉
     * @return Book
     * @author xun.gong@hand-china.com
     * @date 2019/10/14
     */
    Book selectLastNum();

    /**
     * 功能描述:
     * 〈根据查询条件模糊查询〉
     * @param book 查询条件
     * @return List
     * @author xun.gong@hand-china.com
     * @date 2019/10/14
     */
    List<Book> selectByCondition(Book book);

    /**
     * 功能描述:
     * 〈显示最新图书〉
     * @return List
     * @author xun.gong@hand-china.com
     * @date 2019/10/14
     */
    List<Book> selectNew();

    /**
     * 功能描述:
     * 〈根据主键查询数据〉
     * @param bookId 图书ID
     * @return
     * @author xun.gong@hand-china.com
     * @date 2019/10/14
     */
    Book selectById(Integer bookId);

    /**
     * 功能描述:
     * 〈选出最受关注的10本书〉
     * @return List
     * @author xun.gong@hand-china.com
     * @date 2019/10/15
     */
    List<Book> selectPop();

    /**
     * 功能描述:
     * 〈修改图书信息〉
     * @param book 图书信息
     * @return Book
     * @author xun.gong@hand-china.com
     * @date 2019/10/21
     */
    int updateByCondition(Book book);

    /**
     * 功能描述:
     * 〈删除图书信息〉
     * @param bookId 图书主键
     * @return int
     * @author xun.gong@hand-china.com
     * @date 2019/10/21
     */
    int deleteById(Integer bookId);

    /**
     * 功能描述:
     * 〈根据查询条件分页查询〉
     * @param pageInfo 分页信息
     * @param conditionMap 查询条件
     * @return ResultEntity
     * @author xun.gong@hand-china.com
     * @date 2019/10/31
     */
    ResultEntity<Book> selectAllByCondition(PageInfo pageInfo, Map<String, String> conditionMap);
}
